এআই কীভাবে কাজ করে?
আমার মতে উত্তর হলো, “এআই মানুষের মতোই কাজ করে”। তাহলে, এআই কেন ইফিশিয়েন্ট অনেক ক্ষেত্রে? উত্তর হল যে, তারা ইজিলি অনেক তথ্য মনে রাখতে পারে, (আমাদের মত বসে বসে মুখস্ত করা লাগেনা), বিশ্রাম-ঘুম লাগে না (কারেন্ট দিলে আর কুলিং সিস্টেম রাখলেই হয়), আর মেইনলি জীবন নাই। তাই মরা-জীবিত এসব ক্যাচালও নাই। সপ্তাহে ৪০ ঘন্টার ঝামেলা নাই।
এআই কীভাবে কাজ করে বোঝার জন্য প্রথমেই লস ফাংশন কী বুঝে নেই।
দৈনন্দিন লাইফ থেকে উদাহরণ দিতে গেলে, লস ফাংশন হচ্ছে একটা এক্সামিনার, অর্থাৎ পরীক্ষার খাতা দেখে। এক্সামিনারের কাজ কী? পরীক্ষায় আমরা কে কতটা ভুল করছি, ও এ ভুলের জন্য কীভাবে মার্কস কাটতে হবে — এসব দেখা।
লস ফাংশন ঠিক এ কাজটাই করে — মানুষের না, এআই এর। লস ফাংশন এটা বের করে যে, আসল বা সঠিক উতরের চেয়ে এআই এর দেয়া উত্তরটা কতটুকু ভুল, এবং এসব এজন্য পানিসমেন্ট কেমন হবে?
লস ফাংশনের কাছে সাধারণত দুটো জিনিস দেয়া হয়। ট্রু ভ্যালু আর এস্টিমেটেড ভ্যালু।
ট্রু ভ্যালু হচ্ছে, যেটা ঠিক বা আসল। আর এস্টিমেটেড ভ্যালু বা প্রিডিক্টেড ভ্যালু হলো আমাদের এআই বা মেশিন লার্নিং মডেলের আউটপুট।
একটা উদাহরণ দিয়ে বুঝাই,
ধরলাম আমরা বাসাভাড়া বের করার মডেল বানাচ্ছি। তো, একটা বাসার জন্য সব ইনপুট (কয় রুম, কয় তলা, কয় স্কয়ার ফিট, বেডরুম কয়টা, টয়লেট কয়টা এসব যা যা আছে) দেয়ার পর আমার মডেল দেখালো ১০,৪০০ টাকা মাসে ভাড়া হবে। কিন্তু, বাড়িওয়ালা বলতেসে ১০,৫০০ টাকা। এখানে ১০,৪০০ হল এস্টিমেটেড ভ্যালু বা প্রিডিক্টেড ভ্যালু; আর ১০,৫০০ হল ট্রু ভ্যালু।
এটার কস্ট ফাংশনটা হতে পারে এমন, যে, দুটোর মধ্যে ডিফারেন্স এর স্কয়ার ভ্যালু। মানে, ১০০ স্কয়ার = ১০,০০০। অর্থাৎ, এটা ভুল পেল ১০০ (১০,৫০০-১০,৪০০), কিন্তু পানিশমেন্ট দিল ১০,০০০!
একেক টাইপের মডেলে কস্ট ফাংশন একেকরকম হয়। কিন্তু মূল কাজটা সেইম- ভুল হিসাব করে পানিশমেন্ট দেয়া।
লস ফাংশনের একটা প্রধান বৈশিষ্ট্য হল লস ফাংশন ডিফারেনশিয়েবল হতে হবে। ডিফারেনশিয়েশন করা না গেলে লস ফাংশন হবেনা। কেন?
লস ফাংশন দিয়ে আমরা ভুল তো বের করলাম, এখন ভুল থেকে শিখতেও তো হবে? আর এই শিখতে লাগে ডিফারেন্সিয়েশন। লস ফাংশন ডিফারেনশিয়েবল না হলে সেই ভুল থেকে আমার মডেল কিছু শিখতে পারবেনা। না শিখলে পরে কাজ করবে কীভাবে?
২য় বৈশিষ্ট্য হল, লস ফাংশন অবশ্যই নন-লিনিয়ার হতে হবে। কেন? উত্তরটা উপরেই লুকিয়ে আছে। লিনিয়ার ফাংশন এর ডিফারেন্সিয়েশন কি হয়? কনস্ট্যান্ট। ডিফারেন্সিয়েশনের পর কনস্ট্যান্ট ভ্যালু মানে, মডেল নতুন কিছু শিখতে পারবেনা। জাস্ট একটা ভ্যালুই সে পাবে। মডেলে কি হচ্ছে না হচ্ছে বুঝবে না। তাই লস ফাংশন অবশ্যই নন-লিনিয়ার হতে হবে।
আগেই বলেছিলাম, এআই মানুষের মতোই কাজ করে!
ধরি, একটা রচনা লিখতে হবে। টপিক একদম নতুন, বাইরের কোনো সোর্স ইউজ করা যাবেনা। কেউ হয়তো ভালোভাবে জানিও না টপিকটা নিয়ে। ২০ মার্কস। আমরা কীভাবে কাজ করবো এটা একটু ভাবি। আরেকটা শর্ত, কেউ কারো থেকে দেখে লিখবেনা। তবে ম্যাম, খাতা দেয়ার পর নিজেরা এনালাইসিস করতে পারবো।
এখন ক্লাসে যদি টিচার লিখতে দেয়, তাহলে কি হবে? সবাই নিজের মত লিখবো আমরা। যার যা মনে হয় লিখব। তাইনা?
যারা পারে ভালো হবে হয়তো, যারা কিছুই জানেনা তাদের খারাপ হবে কিছুটা। তারপর টিচার এসে মার্কিং করবে। হায়েস্ট ২০ এ ১২, লোয়েস্ট ৩-৪ আসবে ধরলাম। এখন সবাই যদি শিখতে চাই, তাহলে কি করবো? যে ভালো মার্কস পাইসে তার খাতা নিয়ে দেখবো। কী লিখলে ভালো মার্কস আসে তা দেখবো। যে আগেই ভালো লিখসিলো, সে বুঝবে যে, না আরেকটু ভালো লিখা যাবে এখন। আমি এই এই জিনিস বাদ দিসিলাম। তাইনা?
পরেরদিন যদি সেম জিনিস লিখতে দেয়? তখন আরো ভালো মার্কস আসবে। টপার ১২ থেকে ২ বেড়ে ১৪। আর লোয়েস্ট ১০ এ চলে আসবে। কারণ সবাই টুকটাক জানি এখন কি নিয়ে লিখা লাগবে। তারপর সেম — ভালো মার্কড খাতাগুলা নিয়ে দেখবো সবাই যে আর কীভাবে লিখলে ভালো হয়। সবাই আরেকটু শিখবো।
পরেরদিন লিখতে দিলে আবার? ১২-১৭ এর মধ্যে আসবে। এভাবে এভাবে সবাই ১৭-১৮ পর্যন্ত মার্কসে চলে আসবে। ২০ এ তো ১৯/২০ স্বপ্নেও দেয়না আমাদের!
সবাই যখন ১৭-১৮ করে পাবে, তখন আমরা বুঝব যে না, আমাদের সবাই এ টপিকটা ভালোই শিখে ফেলেছে।
এবার যদি বলি, মেশিন লার্নিং ঠিক এভাবেই কাজ করে! আর, এভাবে স্টেপ বাই স্টেপ শেখার কাজটাই করে অপ্টিমাইজেশন!
এআই এর প্রসেসটাই উপরের এক্সাম্পল দিয়ে বুঝাই। আগের পর্বে কী শিখসিলাম? লস ফাংশনের কাজ। লস ফাংশন হল আমাদের এখানে টিচার। তার কাজ খাতা দেখে মার্ক করা। রাইট?
তো, আমাদের বাসা-ভাড়ার মডেলে আসি। কয়েকটা বাসার জন্য সব ইনপুট (কয় রুম, কয় তলা, কয় স্কয়ার ফিট, বেডরুম কয়টা, টয়লেট কয়টা, সুইমিং পুল আছে কিনা, মেইন রাস্তা থেকে কত দূরে — এসব যা যা আছে) দেয়ার পর সবগুলার জন্য আলাদা আলাদা কিছু আউটপুট আসবে প্রথমে। সে আউটপুট গুলা হিসাব করবে কীভাবে?
সে একটা ফাংশন নিবে — এমন > ভাড়া = রুম সংখ্যা * W1 + b
[W1,b এসব হল প্যারামিটার । W1-কে বলে ওয়েট (Weight)। মানে, রুমের সংখ্যাকে কত দিয়ে গুণ করলে ভাড়াটা আসে। b মানে Bias (বায়াস)। যেমন ১ রুমের বাসা আর ২ রুমের বাসার কথা যদি ভাবি, আমরা দেখব যে একটা বেইস ভাড়া থাকে, তারপর রুমভেদে এড হয়। সো, অইরকম ফিক্সড টাইপ ভ্যালুগুলা থাকবে বায়াস এ ]
পরে লস ফাংশন এসে মার্কিং করে চলে যাবে। এখন মডেল কি করবে? টপারের কাছে যাবে! মানে, যার টায় পানিশমেন্ট বা ভুল কম হইসে। এরকম ৫-৬ জন টপারের মার্কস আর প্রিডিকশনস দেখবো। তো, প্রাথমিকভাবে মনে হল, পার রুমে ১৫০০ করে বাড়ে ভাড়া। আর বেস ভাড়া ১২০০। তাহলে, W1 = 1500, b = 1200। তাহলে, ভাড়া = রুম সংখ্যা * 1500 + 1200।
তো, সবাই পরেরবার এভাবে প্রিডিক্ট করলো। আগের চেয়ে ভালো হল। তাও ভুল ত আছেই। আবারও ভালো মার্কসের গুলা এনালাইজ করলো।। মনে হচ্ছে, মেইন রাস্তা থেকে যত দূরে ভাড়া তত কমে।
আবার ফাংশন নিবে — এমন > ভাড়া = রুম সংখ্যা * W1 + মেইনরোড থেকে দুরত্ব * W2 + b
নেক্সটবার এটা আমলে নিয়ে হিসাব করবে।
এভাবে বেশ কিছু স্টেপ পর আরো কিছু জিনিস মিলায়ে মডেল মোটামুটি পারফেক্ট একটা ভাড়া বলতে শিখে যাবে।
এ পুরা প্রসেসটা হচ্ছে অপ্টিমাইজেশন।
লস ফাংশন-কে নন লিনিয়ার আর ডিফারেনশিয়েবল হতে হয়। আর ডিফারেনশিয়েশন থেকে মডেল শিখে।
কেনো ও কীভাবে?
মডেলের কাজ কি? ভুল কমানো। ভুল কত এটা কে বলে দেয়? লস ফাংশন। তাহলে, ভুল সবচেয়ে কম কোথায়? লস ফাংশনটা গ্রাফে প্লট করলে সবচেয়ে নিচের পয়েন্টে, তাইনা?
এখন নিচে যাবো কীভাবে? বা কোনটা নিচে সেটা বুঝব কীভাবে? ডিফারেনশিয়েশন এর সাহায্যে!
ডিফারেন্সিয়েশন কী দেয়? ঢাল। একটা ফাংশনের ঢাল বা Slope। এখন ঢাল থেকে আমরা কী পেতে পারি? কীভাবে কোনদিকে নামলে সেই ফাগশনের লোয়েস্ট পজিশনে যেতে পারবো। যেমন পজেটিভ স্লোপ মানে বাম থেকে ডানে যেতে হবে। প্যারামিটারগুলার মান একটু বাড়াবে। নেগেটিভ মানে মানগুলা ডান থেকে বামে যাবে, একটু কমবে। এমন চলতে থাকবে যতক্ষণ না একদম লোয়েস্ট পয়েন্টে আসে, যেখান থেকে আর নিচে যাওয়া পসিবল না। তখন প্যারামিটারগুলার মান ফিক্সড হয়ে যাবে।
তখন আমার লস ফাংশনের মান হবে লোয়েস্ট, মানে ভুল সবচেয়ে কম। অর্থাৎ আমাদের মডেল শিখে যাবে যে, এই এই ভাবে হিসাব করলে ভুল সবচেয়ে কম হয়।
উদাহরণ দেই,
যেমন, ভাড়া পার রুমে ২০০০ করে বাড়ে । এটা শুরুতে ২০০০ হবেনা, হয়তো ১৫০০ থাকবে (W1), তারপর ১৬০০, ১৮০০ হয়ে বাড়বে, আবারও ২০৫০ হয়ে যেতে পারে, তখন আবার কমে ২০০০-এ এসে ফিক্সড হবে।
এই যে সে শুরু থেকে স্টেপ বাই স্টেপ শিখলো যে কি করলে ভুল কম হয়, এটাই অপ্টিমাইজেশন। এটাই সে-ই আমাদের রচনা লিখার এক্সাম্পলে যাকে মার্কস বেশি দিসে, তার খাতা দেখে দেখে রচনা লিখতে শিখা।
তারপর আমরা যখন নতুন বাসার ইনফো দিব, তখন যে, এসব প্যারামিটার এর ভ্যালুর সাথে যোগ বিয়োগ গুন ভাগ করে রেজাল্ট বলে দিবে। যেমন, ৩ রুমের বাসা, ২০০ মিটার দূরে হলে — ৩*২০০০-২০০*১০+১৫০০ = ৬৫০০!
এই হলো অপ্টিমাইজেশন। সব মডেলেই এই দুটো জিনিস কমন। লস ফাংশন ও এটাকে অপ্টিমাইজ করা।